// entity实体：跟数据库中的表意义映射，在做数据库的定义
import { Column, CreateDateColumn, Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'
import { Role } from '../../role/entities/role.entity'

// menu 是数据库中的实际表名
@Entity({ name: 'menu' })
export class Menu {
  @PrimaryGeneratedColumn() // primary表示是主键  generated表示是自增的
  id: number

  @Column({ length: 20, comment: '菜单名称' })
  name: string

  @Column({ comment: '菜单的url', unique: true })
  path: string

  @Column({ comment: '重定向地址' })
  redirect: string

  @Column({ comment: '菜单的meta title信息' })
  metaTitle: string

  @Column({ comment: '菜单的meta icon信息' })
  metaIcon: string

  @Column({ comment: '菜单的meta activeMenu信息' })
  metaActiveMenu: string

  @Column({ comment: '父菜单的id' })
  pid: number

  @Column({ type: 'int', comment: '菜单状态 1: 可用 0: 不可用', default: 1 })
  active: number

  // 必备字段
  @CreateDateColumn({ comment: '创建时间' })
  createTime: Date

  @UpdateDateColumn({ comment: '更新时间' })
  updateTime: Date

  @ManyToMany(() => Role)
  @JoinTable({
    name: 'role_menu',
  })
  roles: Role[]
}
